//
//  NSObject+Reflection.h
//  JQKit
//
//  Created by JQZ on 2017/12/27.
//  Copyright © 2017年 JQZ. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSObject (Reflection)

//类名
- (NSString *)jq_className;
+ (NSString *)jq_className;

//父类名称
- (NSString *)jq_superClassName;
+ (NSString *)jq_superClassName;

//实例属性字典
-(NSDictionary *)jq_propertyDictionary;

//属性名称列表
- (NSArray *)jq_propertyKeys;
+ (NSArray *)jq_propertyKeys;

//属性详细信息列表
- (NSArray *)jq_propertiesInfo;
+ (NSArray *)jq_propertiesInfo;

//格式化后的属性列表
+ (NSArray *)jq_propertiesWithCodeFormat;

//方法列表
-(NSArray*)jq_methodList;
+(NSArray*)jq_methodList;

-(NSArray*)jq_methodListInfo;

//创建并返回一个指向所有已注册类的指针列表
+ (NSArray *)jq_registedClassList;
//实例变量
+ (NSArray *)jq_instanceVariable;

//协议列表
-(NSDictionary *)jq_protocolList;
+ (NSDictionary *)jq_protocolList;


- (BOOL)jq_hasPropertyForKey:(NSString*)key;
- (BOOL)jq_hasIvarForKey:(NSString*)key;

@end
